#include<iostream>
#include<string>
#include<ctemplate/template.h>

int main()
{
    std::string html = "./test.html";
    std::string value = "我的oj系统";

    //形成数据字典
    ctemplate::TemplateDictionary root("test");
    root.SetValue("key",value);

    //获取被渲染对象，第二个参数为是否去除空行即保持html网页原貌
    ctemplate::Template * tpl = ctemplate::Template::GetTemplate(html,ctemplate::DO_NOT_STRIP);

    //添加字典数据到网页中
    std::string out_html;
    tpl->Expand(&out_html,&root);

    //渲染成功
    std::cout << out_html << std::endl;

    return 0;
}








// #include<iostream>
// #include<string>
// #include<vector>
// #include<unistd.h>
// #include<sys/time.h>
// #include<sys/resource.h>
// #include<signal.h>

// #include<jsoncpp/json/json.h>
// #include<boost/algorithm/string.hpp>


// using namespace std;


// int main()
// {
//     //boost库的字符串分割
//     string str = "1:回文数:简单:1::::30000";
//     vector<string> tokens;
//     string sep = ":";
//     //第一个参数，填入的容器
//     //第二个参数：源字符串
//     //第三个参数：sep中的任意一个字符
//     //第四个参数：是否压缩。遇到相同字符是否要压缩，如果是:::::，压缩就变成:，如果不压缩就进行分割，那:和:之间就会有空
//     boost::split(tokens, str, boost::is_any_of(sep), boost::algorithm::token_compress_on);

//     for(auto& s: tokens)
//     {
//         cout << s << endl;
//     }

//     return 0;
// }




// int main()
// {
//     //序列化工作
//     //Value是JSON的中间类，可以填充kv值
//     Json::Value root;
//     root["mycode"] = "code";
//     root["myinput"] = "input";
//     root["usr"] = "tww";
//     root["age"] = "21";

//     Json::StyledWriter writer;
//     string str = writer.write(root);
//     cout << str << endl;

//     return 0;
// }


// void handler(int signo)
// {
//     cout << "signo: " << signo << endl;
//     exit(1);
// }

// int main()
// {
//     for(int i = 1; i <= 31; i++)
//     {
//         signal(i,handler);
//     }

//     struct rlimit r;
//     r.rlim_cur = 2;
//     r.rlim_max = RLIM_INFINITY;
//     setrlimit(RLIMIT_CPU, &r);
//     while(1);

//     // struct rlimit r;
//     // r.rlim_cur = 1024 * 1024 * 40;
//     // r.rlim_max = RLIM_INFINITY;
//     // setrlimit(RLIMIT_AS, &r);
//     // int count = 0;
//     // while(1)
//     // {
//     //     int * p = new int[1024 * 1024];
//     //     count++;
//     //     cout << "size: " << count << endl;
//     //     sleep(1);
//     // }

//     return 0;
// }